package program;
public class Operations extends HelpfulFunctions {
public String add(Polynomial p1, Polynomial p2) {
Polynomial p3 = new Polynomial();
p3.createPolynomial(polynomialToString(p1));
for (int i = 0; i < p2.size; i++) {
int ok = 0;
for (int j = 0; j < p3.size; j++)
if (p2.power[i] == p3.power[j]) {
p3.coefficient[j] += p2.coefficient[i];
ok = 1;
break;
}
if (ok == 0) {
p3.coefficient[p3.size] += p2.coefficient[i];
p3.power[p3.size] = p2.power[i];
p3.size++;
}
}
return polynomialToString(p3);
}
public String sub(Polynomial p1, Polynomial p2) {
Polynomial p3 = new Polynomial();
p3.createPolynomial(polynomialToString(p1));
for (int i = 0; i < p2.size; i++) {
int ok = 0;
for (int j = 0; j < p3.size; j++)
if (p2.power[i] == p3.power[j]) {
p3.coefficient[j] -= p2.coefficient[i];
ok = 1;
break;
}
if (ok == 0) {
p3.coefficient[p3.size] = -p2.coefficient[i];
p3.power[p3.size] = p2.power[i];
p3.size++;
}
}
return polynomialToString(p3);
}
public String mul(Polynomial p1, Polynomial p2) {
Polynomial p3 = new Polynomial();
for (int i = 0; i < p1.size; i++) {
for (int j = 0; j < p2.size; j++) {
p3.coefficient[p3.size] = p1.coefficient[i] * p2.coefficient[j];
p3.power[p3.size] = p1.power[i] + p2.power[j];
p3.size++;
}
}
return polynomialToString(p3);
}
public String diff(Polynomial p1) {
Polynomial p3 = new Polynomial();
p3.createPolynomial(polynomialToString(p1));
for (int i = 0; i < p3.size; i++) {
p3.coefficient[i] *= p3.power[i];
p3.power[i]--;
}
return polynomialToString(p3);
}
public String integration(Polynomial p1) {
Polynomial p3 = new Polynomial();
p3.createPolynomial(polynomialToString(p1));
for (int i = 0; i < p3.size; i++) {
p3.coefficient[i] = (p3.coefficient[i] / (p3.power[i] + 1));
p3.power[i]++;
}
return polynomialToString(p3);
}
public String divi(Polynomial p1, Polynomial p2) {
Polynomial p4 = new Polynomial();
p4.createPolynomial(polynomialToString(p2));
Polynomial p3 = new Polynomial();
p3.createPolynomial(polynomialToString(p1));
Polynomial p5 = new Polynomial();
sort(p3);
sort(p2);
while (p3.coefficient[0] >= p2.coefficient[0]) {
p5.coefficient[p5.size] = p3.coefficient[0] / p2.coefficient[0];
p5.power[p5.size] = p3.power[0] - p2.power[0];
for (int i = 0; i < p4.size; i++) {
p4.coefficient[i] = p4.coefficient[i] * p5.coefficient[p5.size];
p4.power[i] = p4.power[i] + p5.power[0];
}
p5.size++;
p3.createPolynomial(sub(p3,p4));
sort(p3);
}
return polynomialToString(p5);
}
}